package cn.itcast.nems.journal.enumeration;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 优惠凭单状态
 *
 * @author 高昌露
 * @since 2023/12/5 18:22
 */
@Getter
@AllArgsConstructor
public enum JournalDiscountState {

    DRAFT("草稿"),
    PENDING("待审批"),
    APPROVING("审批中"),
    REJECTED("审批未通过"),
    CANCELED("已撤回"),
    FINISHED("全部审批通过审批完成"),
    ;

    private final String desc;

    /**
     * 判断当前凭单是否可以编辑
     *
     * @param state 凭单状态
     * @return boolean 是否可以编辑
     * @author 高昌露
     * @since 2023/11/23 14:49
     */
    public static boolean canEdit(String state) {
        return DRAFT.name().equals(state);
    }

    /**
     * 判断当前凭单是否可以撤销
     *
     * @param state 凭单状态
     * @return boolean 是否可以撤销
     * @author 高昌露
     * @since 2023/11/23 14:49
     */
    public static boolean canCancel(String state) {
        return PENDING.name().equals(state) || DRAFT.name().equals(state);
    }

    /**
     * 判断当前凭单是否可以审批
     *
     * @param state 凭单状态
     * @return boolean 是否可以审批
     * @author 高昌露
     * @since 2023/11/23 14:49
     */
    public static boolean canApprove(String state) {
        return PENDING.name().equals(state) || APPROVING.name().equals(state);
    }

    /**
     * 判断当前凭单是否可以用于核销
     *
     * @param state 凭单状态
     * @return boolean 是否可以用于核销
     * @author 高昌露
     * @since 2023/12/10 10:49
     */
    public static boolean canWriteOff(String state) {
        return FINISHED.name().equals(state);
    }
}
